/*
 * @Author: blank dsbssb@qq.com
 * @Date: 2023-08-12 15:52:43
 * @LastEditors: blank dsbssb@qq.com
 * @LastEditTime: 2023-10-07 15:05:02
 * Copyright (c) 2023 by blank , All Rights Reserved.
 */
// import { PathType } from '@/types';

/**
 * 获取图片内容
 * @param {ConfigType} targetData 配置项
 */
export async function fetchImages(url: string, module: any) {
  if (!url)
    return ''
  // 正则判断图片是否为 url，是则直接返回该 url
  if (/^(http|https):\/\/([\w.])\S*/.test(url))
    return url
  // 兼容旧数据
  if (url.includes('@') || url.includes('base64'))
    return url

  // const imageName = url.substring(url.lastIndexOf('/') + 1);
  for (const key in module) {
    if (key?.includes(url)) {
      return module[key]?.default || ''
    }
  }
  return ''
}

/**
 * 获取组件
 * @description 描述信息
 * @remarks 备注
 * @param {*String}  []
 * @returns {*Object}
 */
export function fetchComponent(name: string, module: any) {
  for (const key in module) {
    const urlSplit = key.split('/')

    if (urlSplit[urlSplit.length - 2] === name) {
      return module[key]
    }
  }
}

/**
 * 获取上传的文件数据
 * @param { File } file 文件对象
 */
export function readFile(file: File) {
  return new Promise((resolve: any) => {
    try {
      const reader = new FileReader()
      reader.onload = (evt: ProgressEvent<FileReader>) => {
        if (evt.target) {
          resolve(evt.target.result)
        }
      }
      reader.readAsText(file)
    }
    catch (error) {}
  })
}

/**
 * 通过 a 标签下载数据
 * @param url
 * @param filename
 * @param fileSuffix
 */
export function downloadByA(url: string, filename: string | number = new Date().getTime()) {
  const ele = document.createElement('a') // 创建下载链接
  ele.download = `${filename}` // 设置下载的名称
  ele.style.display = 'none' // 隐藏的可下载链接
  // 字符内容转变成blob地址
  ele.href = url
  // 绑定点击时间
  document.body.appendChild(ele)
  ele.click()
  // 然后移除
  document.body.removeChild(ele)
}

/**
 * 下载数据
 * @param { string } content 数据内容
 * @param { ?string } filename 文件名称（默认随机字符）
 */
export function downloadTextFile(content: string, filename = new Date().getTime()) {
  // 字符内容转变成blob地址
  const blob = new Blob([content])
  downloadByA(URL.createObjectURL(blob), filename)
}
